/**
 * 前端配置文件
 * 包含开发环境设置、API配置、调试选项等
 */

// 获取环境变量值，支持默认值
const getEnvValue = (key, defaultValue = '') => {
  return process.env[key] || defaultValue
}

// 将字符串转换为布尔值
const toBool = (value) => {
  if (typeof value === 'boolean') return value
  if (typeof value === 'string') {
    return value.toLowerCase() === 'true'
  }
  return false
}

// 基础配置
export const config = {
  // 应用信息
  app: {
    title: getEnvValue('VUE_APP_TITLE', '信用生活系统'),
    version: '1.0.0',
    author: '信用生活团队'
  },
  
  // API配置
  api: {
    baseURL: getEnvValue('VUE_APP_BASE_API', '/dev-api'),
    timeout: parseInt(getEnvValue('VUE_APP_REQUEST_TIMEOUT', '30000')),
    retryCount: parseInt(getEnvValue('VUE_APP_RETRY_COUNT', '3')),
    retryDelay: parseInt(getEnvValue('VUE_APP_RETRY_DELAY', '1000')),
    enableRetry: toBool(getEnvValue('VUE_APP_ENABLE_RETRY', 'true'))
  },
  
  // 开发配置
  dev: {
    apiDebug: toBool(getEnvValue('VUE_APP_API_DEBUG', 'true')),
    showServerStatus: toBool(getEnvValue('VUE_APP_SHOW_SERVER_STATUS', 'true')),
    autoOpen: toBool(getEnvValue('VUE_APP_AUTO_OPEN', 'true')),
    hotReload: toBool(getEnvValue('VUE_APP_HOT_RELOAD', 'true')),
    showProgress: toBool(getEnvValue('VUE_APP_SHOW_PROGRESS', 'true'))
  },
  
  // 后端服务配置
  server: {
    // 主要后端地址
    primaryUrl: getEnvValue('VUE_APP_DEV_API_URL', 'http://localhost:8080'),
    // 备用后端地址
    fallbackUrl: getEnvValue('VUE_APP_FALLBACK_API_URL', 'http://127.0.0.1:8080'),
    // 健康检查路径
    healthCheckPath: '/actuator/health',
    // 检查间隔（毫秒）
    checkInterval: parseInt(getEnvValue('VUE_APP_SERVER_CHECK_INTERVAL', '30000')),
    // 检查超时（毫秒）
    checkTimeout: 5000
  },
  
  // UI配置
  ui: {
    // 主题设置
    theme: {
      primary: '#409EFF',
      success: '#67C23A',
      warning: '#E6A23C',
      error: '#F56C6C'
    },
    // 布局设置
    layout: {
      sidebarWidth: '210px',
      headerHeight: '50px',
      tagsViewHeight: '34px'
    }
  },
  
  // 功能开关
  features: {
    // 是否启用信用分功能
    creditScore: true,
    // 是否启用生活服务
    lifeService: true,
    // 是否启用商业服务
    businessService: true,
    // 是否启用亲社会行为
    prosocialBehavior: true,
    // 是否启用新闻资讯
    news: true,
    // 是否启用管理员功能
    admin: true
  }
}

// 开发环境配置
export const devConfig = {
  // 调试选项
  debug: {
    // 是否显示Vue DevTools
    devtools: process.env.NODE_ENV === 'development',
    // 是否显示性能提示
    performance: process.env.NODE_ENV === 'development',
    // 是否显示警告
    productionTip: false,
    // 是否启用API调试日志
    apiDebug: config.dev.apiDebug,
    // 是否显示路由调试信息
    routerDebug: false
  },
  
  // 开发服务器配置
  devServer: {
    port: parseInt(getEnvValue('VUE_APP_DEV_PORT', '80')),
    host: '0.0.0.0',
    https: false,
    hotOnly: false,
    open: config.dev.autoOpen,
    overlay: {
      warnings: false,
      errors: true
    }
  },
  
  // Mock配置
  mock: {
    enable: toBool(getEnvValue('VUE_APP_ENABLE_MOCK', 'false')),
    baseURL: '/mock-api'
  }
}

// 生产环境配置
export const prodConfig = {
  // 构建优化
  build: {
    // 是否生成source map
    sourceMap: false,
    // 是否启用Gzip压缩
    gzip: true,
    // 打包分析
    bundleAnalyzer: false
  },
  
  // CDN配置
  cdn: {
    enable: false,
    externals: {},
    css: [],
    js: []
  }
}

// 根据环境返回对应配置
export const getConfig = () => {
  const baseConfig = config
  
  if (process.env.NODE_ENV === 'development') {
    return {
      ...baseConfig,
      dev: devConfig
    }
  } else {
    return {
      ...baseConfig,
      prod: prodConfig
    }
  }
}

// 常用工具函数
export const utils = {
  // 检查是否为开发环境
  isDev: () => process.env.NODE_ENV === 'development',
  
  // 检查是否为生产环境
  isProd: () => process.env.NODE_ENV === 'production',
  
  // 获取API完整URL
  getApiUrl: (path) => {
    const baseURL = config.api.baseURL
    return path.startsWith('/') ? `${baseURL}${path}` : `${baseURL}/${path}`
  },
  
  // 检查功能是否启用
  isFeatureEnabled: (feature) => {
    return config.features[feature] === true
  },
  
  // 获取服务器状态检查URL
  getServerStatusUrl: () => {
    return `${config.server.primaryUrl}${config.server.healthCheckPath}`
  }
}

// 导出默认配置
export default getConfig() 